package thss.mro.manager;

import thss.mro.entity.Packet;
import thss.mro.entity.template.ProtocolHeadTemplate;
import thss.mro.entity.template.ProtocolTemplate;
import thss.mro.util.Constants;
import thss.mro.util.Template;
import thss.mro.util.TypeTransUtil;

/**
 * 模板管理类
 */
public class TemplateManager {

	/**
	 * 根据模板ID获得模板
	 */
	public static ProtocolTemplate getTemplate(String headId){
		return Template.getTemplate(headId);
	}
	
	/**
	 * 根据模板ID获得头部模板
	 */
	public static ProtocolHeadTemplate getHeadTemplate(String headId){
		return (ProtocolHeadTemplate)Template.getTemplate(headId);
	}
	
	/**
	 * 根据头部模板获得正文模板Id
	 */
	public static String getBodyTemplate(ProtocolHeadTemplate headTpl,Packet headPacket){
		if(headTpl.getProtocolName().equals(Constants.PROTOCOL_NAME_SCP)){
			//SCP直接获得正文模板Id
			return Constants.TEMPLATE_ID_SCP_BODY;
		}else if(headTpl.getProtocolName().equals(Constants.PROTOCOL_NAME_SCPCELL)){
			//SCPCELL信元需要结合信元编码获得正文模板Id
			byte[] tmp = (byte[])headPacket.getFieldValue("cellCode");
			int cellCode = TypeTransUtil.bytes2Int(tmp);
			return Constants.TEMPLATE_ID_SCPCELL_BODY+cellCode;
		}
		return null;
	}
	
}
